package com.kang.c0c.tree.node;

import java.util.Vector;

import com.kang.c0c.symbol.FunctionSymbol;

/**
 * 用户自定义函数调用节点，定义了抽象语法树中函数调用的节点
 * FuncCall		：CALL	函数调用
 *
 * @field
 * funcSym		：被调用的函数的函数符号表项信息
 * paramList	：函数调用时的参数表
 * 
 * @author kang
 *
 * Feb 7, 2009
 */
public class CallNode extends Node{
	private FunctionSymbol funcSym;
	private Vector<BinaryNode> paramList;
	
	public CallNode(){
		this(null);
	}
	
	public CallNode(FunctionSymbol funcSym){
		super(Nodes.CALL);
		this.funcSym = funcSym;
		this.paramList = new Vector<BinaryNode>();
	}
	
	public int getParamCount(){
		return paramList.size();
	}
	
	public void appendParam(BinaryNode expr){
		paramList.add(expr);
	}
	
	public BinaryNode NodeAt(int i){
		return paramList.elementAt(i);
	}

	public FunctionSymbol getFuncSym() {
		return funcSym;
	}

	public void setFuncSym(FunctionSymbol funcSym) {
		this.funcSym = funcSym;
	}
}
